import java.sql.SQLOutput;

public class CodeBlock3 {
    public static void main(String[] args) {
        new CCC1();
//        运行结果：
//        CCC1的静态代码块被执行
//        AAA的普通代码块被执行
//        AAA的无参构造器被调用
//        BBB的普通代码块被调用
//        BBB的无参构造器被调用
//        CCC1的普通代码块被执行
//        CCC1的无参构造器被调用
    }
}


class AAA1{
    {
        System.out.println("AAA的普通代码块被执行");
    }
    public AAA1(){
        System.out.println("AAA的无参构造器被调用");
    }
}


class BBB1 extends AAA1{
    {
        System.out.println("BBB的普通代码块被调用");
    }
    public BBB1(){
//        1、super()
//        2、调用本类的普通代码块
        System.out.println("BBB的无参构造器被调用");
    }

}

class CCC1 extends BBB1{
    static{
        System.out.println("CCC1的静态代码块被执行");
    }
    {
        System.out.println("CCC1的普通代码块被执行");
    }
    public CCC1(){
        System.out.println("CCC1的无参构造器被调用");
    }
}